//
//  SLMainViewController.swift
//  langligelang
//
//  Created by 秦－政 on 2016/10/22.
//  Copyright © 2016年 pete. All rights reserved.
//

import UIKit
import SVProgressHUD
class SLMainViewController: UITabBarController{

    override func viewDidLoad() {
        super.viewDidLoad()
        // 实例化自定义tabBar
        let tabBar = SLTabBar()
//        tabBar.slDelegate = self // 设置代理
        // 闭包实例化
        
        tabBar.closure = { [unowned self] in
            print("我被点了在外边")
            if !SLUserAccountViewModel.sharedTools.isLogin {
                SVProgressHUD.showError(withStatus: "先登录，在来啦！")
                return
            }
            //  代码执行到此,表示登录

            // 实例化一个composeView
            let ComposeView = SLComposeView()
            // 将自身传给ComposeView 负责弹出控制器
            ComposeView.show(target: self)
            
        }
        // 通过 kvc 给计算型属性赋值
        setValue(tabBar, forKey: "tabBar") // 键是怎么确定的
        // 添加子控制器
        addChildViewController(vc: SLHomeViewController(), title: "首页", imgName: "tabbar_home")
        addChildViewController(vc: SLMessageViewController(), title: "消息", imgName: "tabbar_message_center")
        addChildViewController(vc: SLDiscoverViewController(), title: "发现", imgName: "tabbar_discover")
        addChildViewController(vc: SLProfileViewController(), title: "我", imgName: "tabbar_profile")
    }
    private func addChildViewController(vc: UIViewController,title: String, imgName: String){
        // 设置title
        vc.title = title
        // 设置文字颜色   用文本属性
        vc.tabBarItem.setTitleTextAttributes([NSForegroundColorAttributeName:SLTHEMECOLOR], for: UIControlState.selected)
        // 设置图片
        vc.tabBarItem.image = UIImage(named: imgName)
        // 选中图片使用原生的渲染方式
        vc.tabBarItem.selectedImage = UIImage(named:"\(imgName)_selected")?.withRenderingMode(UIImageRenderingMode.alwaysOriginal)
        // 添加到导航控制器
        let vcNav = SLNavigationController(rootViewController: vc)
        // 添加到tabbar
        addChildViewController(vcNav)
    }
}

// extension 相当于 OC 中的分类 给类添加方法 (也可以用于 代码分块)
// 注意: 里面不能有存储型属性 或者 指定构造函数 只能使用便利构造函数
// MARK: - HMTabBarDelegate
//        extension SLMainViewController:SLTabBarDelegate{
//            // 执行代理方法
//            func composeButtonClickOfTabBar() {
//
//                print("在外边被点啦！")
//            }
//        }
